package face;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Vector;

import javax.swing.table.DefaultTableModel;

import model.Aluno;
import model.Aula;
import model.Turma;
import repositorio.AlunoRepositorio;
import repositorio.AulaRepositorio;
import repositorio.TurmaRepositorio;

public class ChamadaDataModel extends DefaultTableModel {

	AlunoRepositorio alunoRepo;
	TurmaRepositorio turmaRepo;
	AulaRepositorio aulaRepo;
	Turma turma;

	public ChamadaDataModel(Turma turma) {
		alunoRepo = new AlunoRepositorio();
		turmaRepo = new TurmaRepositorio();
		aulaRepo = new AulaRepositorio();
		this.turma = turma;
		
		
		montarModelo();
		
	}

	private void montarModelo() {

		List<Aula> aulas = aulaRepo.buscarAulasPorTurma(turma.getCdTurma());
		List<Aluno> alunos = alunoRepo.buscarAlunosPorTurma(turma);
		List<Map<String, String>> linhas = new ArrayList<Map<String, String>>();

		List<String> colsName = new ArrayList<String>();

		colsName.add("MATRICULA");
		colsName.add("NOME");

		for (Aula aula : aulas) {
			colsName.add(new SimpleDateFormat("dd/MM").format(aula.getData()));
		}

		Map<String, String> valores;

		for (Aluno aluno : alunos) {

			valores = new HashMap<String, String>();
			valores.put("MATRICULA", String.valueOf(aluno.getNrMatricula()));
			valores.put("NOME", aluno.getNome());
			valores.putAll(aulaRepo.buscarChamdasAluno(aluno.getNrMatricula(),
					turma.getCdTurma()));

			linhas.add(valores);

		}

		this.setColumnIdentifiers(colsName.toArray());

		Vector<String> linha = null;

		for (Map<String, String> cols : linhas) 
		{
			linha = new Vector<String>();
			for (String coluna : colsName) 
			{
				linha.add(cols.get(coluna));
			}
			addRow(linha);
		}
	}

}
